home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 101 / CD-ROM 101.iso / compl / maya5ple / Install_MayaPLE5_English.exe / Maya / Data1.cab / performPolyMove.mel < prev    next >
Encoding:
Text File  |  2003-07-17  |  22.0 KB  |  634 lines

  1. // Copyright (C) 1997-2002 Alias|Wavefront,
  2. // a division of Silicon Graphics Limited.
  3. //
  4. // The information in this file is provided for the exclusive use of the
  5. // licensees of Alias|Wavefront.  Such users have the right to use, modify,
  6. // and incorporate this code into other products for purposes authorized
  7. // by the Alias|Wavefront license agreement, without fee.
  8. //
  9. // ALIAS|WAVEFRONT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  10. // INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
  11. // EVENT SHALL ALIAS|WAVEFRONT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  12. // CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
  13. // DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  14. // TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  15. // PERFORMANCE OF THIS SOFTWARE.
  16. //
  17. //  Alias|Wavefront Script File
  18. //  MODIFY THIS AT YOUR OWN RISK
  19. //
  20. //  Creation Date:  4 April 1997
  21. //
  22. //  Description:
  23. //
  24. //
  25. //  Procedure Name:
  26. //      performPolyMove(string $operation, int $option)
  27. //
  28. //  Description:
  29. //         brings a dialog box to set chip off parameters if $option==1
  30. //         if ($option ==0) performs an extrude instead
  31. //         returns a command string otherwise.
  32. //         
  33. //  Input Arguments:
  34. //        $option : 
  35. //        $operation : the type of item to move, if empty string: moves the current pick mask component.
  36. //  Return Value:
  37. //        command string iff $option==2
  38. //
  39.  
  40. proc setOptionVars (string $comp, int $forceFactorySettings)
  41. {
  42.     string $ovar="polyMove" + $comp;
  43.  
  44. //    -tx/-translateX  -ty/-translateY  -tz/-translateZ 
  45.      if ($forceFactorySettings || !`optionVar -exists ($ovar+"Translate")`)
  46.         optionVar -floatValue ($ovar+"Translate") 0
  47.             -floatValueAppend ($ovar+"Translate") 0
  48.             -floatValueAppend ($ovar+"Translate") 0;
  49.             
  50. //   -sx/-scaleX  -sy/-scaleY  -sz/-scaleZ 
  51.     if ($forceFactorySettings || !`optionVar -exists ($ovar+"Scale")`)
  52.         optionVar -floatValue ($ovar+"Scale") 1.
  53.             -floatValueAppend ($ovar+"Scale") 1.
  54.             -floatValueAppend ($ovar+"Scale") 1.;
  55.  
  56. //   -rx/-rotateX  -ry/-rotateY  -rz/-rotateZ 
  57.     if ($forceFactorySettings || !`optionVar -exists ($ovar+"Rotate")`)
  58.         optionVar -floatValue ($ovar+"Rotate") 0
  59.             -floatValueAppend ($ovar+"Rotate") 0
  60.             -floatValueAppend ($ovar+"Rotate") 0;
  61.     
  62.     
  63. //   -ran/-random 
  64.     if ($forceFactorySettings || !`optionVar -exists ($ovar+"Random")`)
  65.         optionVar -floatValue ($ovar+"Random") 0.;
  66.     
  67.     if ($comp != "map") {
  68. //     -ws/-worldspace 
  69.     if ($forceFactorySettings || !`optionVar -exists ($ovar+"WorldSpace")`)
  70.         optionVar -intValue ($ovar+"WorldSpace") 0;
  71.     
  72.     // Manipulator on Global Values.
  73.     if ($forceFactorySettings || !`optionVar -exists ($ovar+"World")`)
  74.         optionVar -intValue ($ovar+"World") 0;
  75.  
  76. //   -ltz/-localTranslateZ 
  77.     if ($forceFactorySettings || !`optionVar -exists ($ovar+"LocalTranslate")`)
  78.         optionVar -floatValue ($ovar+"LocalTranslate") 0.0
  79.             -floatValueAppend ($ovar+"LocalTranslate") 0.0
  80.             -floatValueAppend ($ovar+"LocalTranslate") 0.0;
  81.  
  82. //   -lrx/-localRotateX  -lry/-localRotateY  -lrz/-localRotateZ 
  83.     if ($forceFactorySettings || !`optionVar -exists ($ovar+"LocalRotate")`)
  84.         optionVar -floatValue ($ovar+"LocalRotate") 0.0
  85.             -floatValueAppend ($ovar+"LocalRotate") 0.0
  86.             -floatValueAppend ($ovar+"LocalRotate") 0.0;
  87.     
  88. //    -lsx/-localScaleX   -lsy/-localScaleY -lsz/-localScaleZ 
  89.     if ($forceFactorySettings || !`optionVar -exists ($ovar+"LocalScale")`)
  90.         optionVar -floatValue ($ovar+"LocalScale") 1.
  91.             -floatValueAppend ($ovar+"LocalScale") 1.
  92.             -floatValueAppend ($ovar+"LocalScale") 1.;
  93.  
  94.     if ($comp != "e") {
  95. //     -ldx/-localDirectionX  -ldy/-localDirectionY  -ldz/-localDirectionZ 
  96.     if ($forceFactorySettings || !`optionVar -exists ($ovar+"LocalDirection")`)
  97.         optionVar -floatValue ($ovar+"LocalDirection") 1
  98.             -floatValueAppend ($ovar+"LocalDirection") 0
  99.             -floatValueAppend ($ovar+"LocalDirection") 0;
  100.     }
  101.  
  102.     if ($comp == "f") {
  103. //   -off/-offset 
  104.         if ($forceFactorySettings || !`optionVar -exists ($ovar+"Offset")`)
  105.             optionVar -floatValue ($ovar+"Offset") 0.;
  106. //   -g/-gravity 
  107. //   -gx/-gravityX  -gy/-gravityY  -gz/-gravityZ 
  108.         if ($forceFactorySettings || !`optionVar -exists ($ovar+"Gravity")`)
  109.             optionVar -floatValue ($ovar+"Gravity") 0.
  110.                 -floatValueAppend ($ovar+"Gravity") -1.
  111.                 -floatValueAppend ($ovar+"Gravity") 0.;
  112. //    -w/-weight 
  113.         if ($forceFactorySettings || !`optionVar -exists ($ovar+"Weight")`)
  114.             optionVar -floatValue ($ovar+"Weight") 0.;
  115. //     -m/-magnet 
  116. //     -mx/-magnX  -my/-magnY  -m/-magnZ 
  117.         if ($forceFactorySettings || !`optionVar -exists ($ovar+"Magnet")`)
  118.             optionVar -floatValue ($ovar+"Magnet") 0.
  119.                 -floatValueAppend ($ovar+"Magnet") 0.
  120.                 -floatValueAppend ($ovar+"Magnet") 0.;
  121.  //  -att/-attraction 
  122.         if ($forceFactorySettings || !`optionVar -exists ($ovar+"Attr")`)
  123.             optionVar -floatValue ($ovar+"Attr") 0.; // range  -2..2
  124.         }
  125.  
  126.     if ($comp == "e") {
  127. //    -lc/localCenter enum <I>0|1|2</I>
  128. //       Local center on the edge. (Middle point : 0, Start point : 1, End point :2)
  129.         if ($forceFactorySettings || !`optionVar -exists ($ovar+"LocalCenter")`)
  130.             optionVar -intValue ($ovar+"LocalCenter") 1;
  131.         }
  132.     }
  133. }
  134.  
  135. global proc performPolyMoveSetup (string $comp, string $parent, int $forceFactorySettings)
  136. {
  137.     setOptionVars($comp, $forceFactorySettings);
  138.     setParent $parent;
  139.     int $ival; int $ivals[3]; float $val; float $vals[3];
  140.     
  141.     string $ovar="polyMove" + $comp;
  142.     
  143.     $fval =`optionVar -query ($ovar+"Random")`;
  144.     floatSliderGrp -edit -value $fval polyMoveRandom;
  145.  
  146.     if ($comp != "map")
  147.     {
  148.          $vals = `optionVar -query ($ovar+"Translate")`;
  149.          floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] -value3 $vals[2] polyMoveTranslate;
  150.  
  151.          $vals=`optionVar -query ($ovar+"Scale")`;
  152.          floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] -value3 $vals[2] polyMoveScale;
  153.  
  154.         $vals=`optionVar -query ($ovar+"Rotate")`;
  155.         floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] -value3 $vals[2] polyMoveRotate;
  156.          
  157.          
  158.         $ival=`optionVar -query ($ovar+"WorldSpace")`;
  159.         checkBoxGrp -edit -value1 $ival polyMoveWorldSpace;
  160.         
  161.         // Manipulator on Global Values.
  162. //        $ival = `optionVar -query ($ovar+"World")`;
  163. //        checkBoxGrp -edit -value1 $ival polyMoveWorld;
  164.  
  165.         if ($comp == "f" || $comp == "e")
  166.         {
  167.             $vals=`optionVar -query ($ovar+"LocalTranslate")`;
  168.             floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] -value3 $vals[2] polyMoveLocalTranslate;
  169.         
  170.             $vals=`optionVar -query ($ovar+"LocalRotate")`;
  171.             floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] -value3 $vals[2] polyMoveLocalRotate;  
  172.  
  173.             $vals=`optionVar -query ($ovar+"LocalScale")`;
  174.             floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] -value3 $vals[2] polyMoveLocalScale;  
  175.             
  176.             if ($comp == "f")
  177.             {
  178.                 $vals=`optionVar -query ($ovar+"LocalDirection")`;
  179.                  floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] -value3 $vals[2] polyMoveLocalDirection;  
  180.  
  181.                 float $val=`optionVar -query ($ovar+"Offset")`;
  182.                 floatSliderGrp -edit -value $val polyMoveOffset;
  183.         
  184.                 //$vals=`optionVar -query ($ovar+"Gravity")`;
  185.                 //floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] -value3 $vals[2] polyMoveGravity;  
  186.  
  187.                 //$val=`optionVar -query ($ovar+"Weight")`;
  188.                 //floatSliderGrp -edit -value $val polyMoveWeight;
  189.                 
  190.                 //$vals=`optionVar -query ($ovar+"Magnet")`;
  191.                 //floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] -value3 $vals[2] polyMoveMagnet;  
  192.             
  193.                 //$val=`optionVar -query ($ovar+"Attr")`;
  194.                 //floatSliderGrp -edit -value $val polyMoveAttr;
  195.             }
  196.             if ($comp == "e")
  197.             {
  198.                 $ival = `optionVar -query ($ovar+"LocalCenter")`;
  199.                 optionMenuGrp -edit -sl $ival polyMoveLocalCenter;
  200.             }
  201.         }
  202.         else if ($comp == "vtx")
  203.         {
  204.             $vals=`optionVar -query ($ovar+"LocalTranslate")`;
  205.             floatFieldGrp -edit -value1 $vals[2] polyMoveLocalTranslate;
  206.  
  207.             $vals=`optionVar -query ($ovar+"LocalDirection")`;
  208.              floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] -value3 $vals[2] polyMoveLocalDirection;  
  209.         } 
  210.     }
  211.     else if ($comp == "map")
  212.     {
  213.          $vals = `optionVar -query ($ovar+"Translate")`;
  214.          floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] polyMoveTranslate;
  215.     
  216.         $vals=`optionVar -query ($ovar+"Rotate")`;
  217.          floatFieldGrp -edit -value1 $vals[0] polyMoveRotate;
  218.      
  219.          $vals=`optionVar -query ($ovar+"Scale")`;
  220.          floatFieldGrp -edit -value1 $vals[0] -value2 $vals[1] polyMoveScale;
  221.     }
  222. }
  223.  
  224. global proc performPolyMoveCallback (string $comp, string $parent, int $doIt)
  225. {
  226.     string $ovar="polyMove" + $comp;
  227.     setParent $parent;
  228.  
  229.     optionVar -floatValue ($ovar+"Random")
  230.         `floatSliderGrp -query -value polyMoveRandom`;
  231.     
  232.     if ($comp != "map")
  233.     {
  234.         optionVar -intValue ($ovar+"WorldSpace") 
  235.             `checkBoxGrp -query -value1 polyMoveWorldSpace`;
  236.  
  237.         optionVar -floatValue ($ovar+"Translate")
  238.             `floatFieldGrp -query -value1 polyMoveTranslate`
  239.             -floatValueAppend ($ovar+"Translate")
  240.             `floatFieldGrp -query -value2 polyMoveTranslate`
  241.             -floatValueAppend ($ovar+"Translate")
  242.             `floatFieldGrp -query -value3 polyMoveTranslate`;
  243.  
  244.         optionVar -floatValue ($ovar+"Scale")
  245.             `floatFieldGrp -query -value1 polyMoveScale`
  246.             -floatValueAppend ($ovar+"Scale")
  247.             `floatFieldGrp -query -value2 polyMoveScale`
  248.             -floatValueAppend ($ovar+"Scale")
  249.             `floatFieldGrp -query -value3 polyMoveScale`;
  250.  
  251.         optionVar -floatValue ($ovar+"Rotate")
  252.             `floatFieldGrp -query -value1 polyMoveRotate`
  253.             -floatValueAppend ($ovar+"Rotate")
  254.             `floatFieldGrp -query -value2 polyMoveRotate`
  255.             -floatValueAppend ($ovar+"Rotate")
  256.             `floatFieldGrp -query -value3 polyMoveRotate`;
  257.  
  258.  
  259.         // Manipulator on Global Values.
  260. //        optionVar -intValue ($ovar+"World") 
  261. //            `checkBoxGrp -query -value1 polyMoveWorld`;
  262.  
  263.         if ($comp == "f" || $comp =="e")
  264.         {
  265.             optionVar -floatValue ($ovar+"LocalTranslate")
  266.                 `floatFieldGrp -query -value1 polyMoveLocalTranslate`
  267.                 -floatValueAppend ($ovar+"LocalTranslate")
  268.                 `floatFieldGrp -query -value2 polyMoveLocalTranslate`
  269.                 -floatValueAppend ($ovar+"LocalTranslate")
  270.                 `floatFieldGrp -query -value3 polyMoveLocalTranslate`;
  271.             
  272.             optionVar -floatValue ($ovar+"LocalRotate")
  273.                 `floatFieldGrp -query -value1 polyMoveLocalRotate`
  274.                 -floatValueAppend ($ovar+"LocalRotate")
  275.                 `floatFieldGrp -query -value2 polyMoveLocalRotate`
  276.                 -floatValueAppend ($ovar+"LocalRotate")
  277.                 `floatFieldGrp -query -value3 polyMoveLocalRotate`;
  278.         
  279.             optionVar -floatValue ($ovar+"LocalScale")
  280.                 `floatFieldGrp -query -value1 polyMoveLocalScale`
  281.                 -floatValueAppend ($ovar+"LocalScale")
  282.                 `floatFieldGrp -query -value2 polyMoveLocalScale`
  283.                 -floatValueAppend ($ovar+"LocalScale")
  284.                 `floatFieldGrp -query -value3 polyMoveLocalScale`;
  285.  
  286.             if ($comp == "f")
  287.             {
  288.                 optionVar -floatValue ($ovar+"LocalDirection")
  289.                     `floatFieldGrp -query -value1 polyMoveLocalDirection`
  290.                     -floatValueAppend ($ovar+"LocalDirection")
  291.                     `floatFieldGrp -query -value2 polyMoveLocalDirection`
  292.                     -floatValueAppend ($ovar+"LocalDirection")
  293.                     `floatFieldGrp -query -value3 polyMoveLocalDirection`;
  294.             
  295.                 optionVar -floatValue ($ovar+"Offset")
  296.                     `floatSliderGrp -query -value polyMoveOffset`;
  297.  
  298.                 //optionVar -floatValue ($ovar+"Gravity")
  299.                     //`floatFieldGrp -query -value1 polyMoveGravity`
  300.                     //-floatValueAppend ($ovar+"Gravity")
  301.                     //`floatFieldGrp -query -value2 polyMoveGravity`
  302.                     //-floatValueAppend ($ovar+"Gravity")
  303.                     //`floatFieldGrp -query -value3 polyMoveGravity`;
  304.                 //optionVar -floatValue ($ovar+"Weight")
  305.                     //`floatSliderGrp -query -value polyMoveWeight`;    
  306.                 
  307.                 //optionVar -floatValue ($ovar+"Magnet")
  308.                     //`floatFieldGrp -query -value1 polyMoveMagnet`
  309.                     //-floatValueAppend ($ovar+"Magnet")
  310.                     //`floatFieldGrp -query -value2 polyMoveMagnet`
  311.                     //-floatValueAppend ($ovar+"Magnet")
  312.                     //`floatFieldGrp -query -value3 polyMoveMagnet`;
  313.                 //optionVar -floatValue ($ovar+"Attr")
  314.                     //`floatSliderGrp -query -value polyMoveAttr`;    
  315.             }
  316.             if ($comp == "e")
  317.             {
  318.                 optionVar -intValue ($ovar+"LocalCenter")
  319.                     `optionMenuGrp -query -sl polyMoveLocalCenter`;
  320.             }
  321.         }
  322.         else if ($comp == "vtx")
  323.         {
  324.             float $vals[3]=`optionVar -query ($ovar+"LocalTranslate")`;
  325.  
  326.             optionVar -floatValue ($ovar+"LocalTranslate") $vals[0]
  327.                 -floatValueAppend ($ovar+"LocalTranslate") $vals[1]
  328.                 -floatValueAppend ($ovar+"LocalTranslate")
  329.                 `floatFieldGrp -query -value1 polyMoveLocalTranslate`;
  330.  
  331.             optionVar -floatValue ($ovar+"LocalDirection")
  332.                 `floatFieldGrp -query -value1 polyMoveLocalDirection`
  333.                 -floatValueAppend ($ovar+"LocalDirection")
  334.                 `floatFieldGrp -query -value2 polyMoveLocalDirection`
  335.                 -floatValueAppend ($ovar+"LocalDirection")
  336.                 `floatFieldGrp -query -value3 polyMoveLocalDirection`;
  337.         } 
  338.     }
  339.     else if ($comp == "map")
  340.     {
  341.         optionVar -floatValue ($ovar+"Translate")
  342.             `floatFieldGrp -query -value1 polyMoveTranslate`
  343.             -floatValueAppend ($ovar+"Translate")
  344.             `floatFieldGrp -query -value2 polyMoveTranslate`;
  345.  
  346.         optionVar -floatValue ($ovar+"Rotate")
  347.             `floatFieldGrp -query -value1 polyMoveRotate`
  348.              -floatValueAppend ($ovar+"Rotate") 0.;
  349.  
  350.         optionVar -floatValue ($ovar+"Scale")
  351.             `floatFieldGrp -query -value1 polyMoveScale`
  352.             -floatValueAppend ($ovar+"Scale")
  353.             `floatFieldGrp -query -value2 polyMoveScale`;
  354.     }
  355.     if ($doIt) {
  356.         performPolyMove $comp 0;
  357.         string $tmpCmd = "performPolyMove \"" + $comp + "\" 0";
  358.         addToRecentCommandQueue $tmpCmd "PolyMove";
  359.     }
  360. }
  361.  
  362. proc polyMoveOptions (string $comp)
  363. {
  364.     string $commandName = "performPolyMove";
  365.  
  366.     string $callback = ($commandName + "Callback " + $comp);
  367.     string $setup = ($commandName + "Setup " + $comp);
  368.        
  369.     string $layout = getOptionBox();
  370.     setParent $layout;
  371.      setUITemplate -pushTemplate DefaultTemplate;
  372.     scrollLayout;
  373.  
  374.     string $parent = `columnLayout -adj true -columnAttach "both" 5 -columnOffset "both" 5`;
  375.     
  376.     if ($comp != "map")
  377.     {
  378. //        checkBoxGrp -label1 "Manipulator on Global values" polyMoveWorld;
  379.  
  380.         frameLayout -label "Local Values" -cl false -cll true -bv true;
  381.         if ($comp == "f" || $comp == "e")
  382.         {
  383.             columnLayout;
  384.             if ($comp == "f")
  385.                 floatSliderGrp -label "Offset" -min -2.0 -max 2.0 -fmn -100 -fmx 100 polyMoveOffset;
  386.             floatFieldGrp -label "Translate" -numberOfFields 3 polyMoveLocalTranslate;
  387.             floatFieldGrp -label "Rotate" -numberOfFields 3 polyMoveLocalRotate;
  388.             floatFieldGrp -label "Scale" -numberOfFields 3 polyMoveLocalScale;
  389.             if ($comp == "f")
  390.                 floatFieldGrp -label "Direction" -numberOfFields 3 polyMoveLocalDirection;
  391.             if ($comp == "e")
  392.             {
  393.                 optionMenuGrp  -l "Local center" polyMoveLocalCenter;
  394.                     menuItem -l "middle" LocalCenMiddleMenuItem;
  395.                     menuItem -l "start" LocalCenStartMenuItem;
  396.                     menuItem -l "end" LocalCenEndMenuItem;
  397.             }
  398.             setParent ..;
  399.         }
  400.         else if ($comp == "vtx")
  401.         {
  402.             columnLayout;
  403.             floatFieldGrp -label "Translate along normal" -numberOfFields 1 polyMoveLocalTranslate;
  404.             floatFieldGrp -label "Direction" -numberOfFields 3 polyMoveLocalDirection;
  405.             setParent ..;
  406.         }
  407.         setParent ..;
  408.     }
  409.         
  410.     frameLayout -label "Global Values" -cl false -cll true -bv true;
  411.         columnLayout;
  412.         int $num=3; if ($comp =="map") $num=2;
  413.         floatFieldGrp -label "Translate" -numberOfFields $num polyMoveTranslate;
  414.         floatFieldGrp -label "Scale" -numberOfFields $num polyMoveScale;
  415.         if ($comp =="map") {
  416.             floatFieldGrp -label "Rotate" -numberOfFields 1 polyMoveRotate;
  417.         } else {
  418.             floatFieldGrp -label "Rotate" -numberOfFields 3 polyMoveRotate;
  419.         }
  420.         setParent ..;
  421.         setParent ..;
  422.     frameLayout -label "Other Values" -cl false -cll true -bv true;
  423.         columnLayout;
  424.         floatSliderGrp -label "Random" polyMoveRandom;
  425.         if ($comp != "map")
  426.             checkBoxGrp -label1 "World Space Coords." polyMoveWorldSpace;
  427.         setParent ..;
  428.         setParent ..;
  429.  
  430.     //if ($comp == "f") {
  431.         //frameLayout -label "Dynamic Values" -cl false -cll true -bv true;
  432.             //columnLayout;
  433.             //floatFieldGrp -label "Gravity" -numberOfFields 3 polyMoveGravity;
  434.             //floatSliderGrp -label "Weight" -min 0. -max 100.0 polyMoveWeight;
  435.             //floatFieldGrp -label "Magnet" -numberOfFields 3 polyMoveMagnet;
  436.             //floatSliderGrp -label "Attraction" -min -2.0 -max 2.0 polyMoveAttr;
  437.             //setParent ..;
  438.         //setParent ..;
  439.     //}
  440.     
  441.     setUITemplate -popTemplate;
  442.        
  443.     string $lbl="";
  444.     if ($comp == "f") $lbl="Move Face"; 
  445.     else if ($comp == "e") $lbl="Move Edge"; 
  446.     else if ($comp == "vtx")$lbl="Move Vertex";
  447.     else if ($comp == "map")$lbl="Move UVs";
  448.     
  449.     string $applyBtn = getOptionBoxApplyBtn();
  450.     button -edit -label $lbl
  451.            -command ($callback + " " + $parent + " " + 1)
  452.         $applyBtn;
  453.     string $saveBtn = getOptionBoxSaveBtn();
  454.     button -edit 
  455.         -command ($callback + " " + $parent + " " + 0 + "; hideOptionBox")
  456.         $saveBtn;
  457.     string $resetBtn = getOptionBoxResetBtn();
  458.     button -edit 
  459.         -command ($setup + " " + $parent + " " + 1)
  460.         $resetBtn;
  461.              
  462.     setOptionBoxTitle(($lbl + " Options"));
  463.  
  464.     //    Customize the 'Help' menu item text.
  465.     //
  466.     setOptionBoxHelpTag( "MoveComponent" );
  467.  
  468.     eval (($setup + " " + $parent + " " + 0));
  469.     scriptJob -protected
  470.         -parent $parent 
  471.         -event "SelectTypeChanged" "evalDeferred \"performPolyMove \\\"\\\" 1\"";
  472.  
  473.     showOptionBox();
  474. }
  475.  
  476. proc string assembleCmd (string $comp, float $centerX, float $centerY, float $centerZ)
  477. {
  478.     global int $polyGroupComponents;
  479.     string $ovar="polyMove"+$comp;
  480.     string $cmd="";
  481.     
  482.     if ($comp == "f") $cmd="polyMoveFacet";
  483.     else if ($comp == "e") $cmd="polyMoveEdge";
  484.     else if ($comp == "vtx") $cmd="polyMoveVertex";
  485.     else if ($comp == "map") $cmd="polyMoveUV";
  486.     
  487.     // history flag
  488.     int $doHistory = `constructionHistory -q -toggle`;
  489.     $cmd = ($cmd + " -ch " + $doHistory);
  490.     
  491.     float $translate[3] = `optionVar -query ($ovar+"Translate")`;
  492.     float $rotate[3] = `optionVar -query ($ovar+"Rotate")`;
  493.     float $scale[3] = `optionVar -query ($ovar+"Scale")`;
  494.     
  495.     float $crand = `optionVar -query ($ovar+"Random")`;
  496.     int $ws = `optionVar -query ($ovar+"WordlSpace")`;
  497.     
  498.     if ($comp != "map")
  499.     {
  500.         float $pivot[3];
  501.         $pivot[0] = $centerX; $pivot[1] = $centerY; $pivot[2] = $centerZ;
  502.         float $lt[3]= `optionVar -query ($ovar+"LocalTranslate")`;
  503.         float $ld[3];
  504.         $cmd=($cmd
  505.             + " -pvx " + $pivot[0] + " -pvy " +  $pivot[1] + " -pvz " +  $pivot[2]
  506.             + " -tx " + $translate[0] + " -ty " +  $translate[1] + " -tz " +  $translate[2]
  507.             + " -rx " +  $rotate[0]   + " -ry " +  $rotate[1]    + " -rz " +  $rotate[2]
  508.             + " -sx " +  $scale[0]    + " -sy " + $scale[1]      + " -sz " +  $scale[2]
  509.             + " -ran " +  $crand 
  510.             + " -ltz " +  $lt[2] + " -ws " + $ws);
  511.         if ($comp == "f" || $comp == "e")
  512.         {
  513.             float $lr[3]=`optionVar -query ($ovar+"LocalRotate")`;
  514.             float $los[3]=`optionVar -query ($ovar+"LocalScale")`;
  515.             $cmd = ($cmd
  516.                 + " -ltx " + $lt[0]  + " -lty " +  $lt[1]
  517.                 + " -lrx " + $lr[0]  + " -lry " +  $lr[1]  + " -lrz " +  $lr[2]
  518.                 + " -lsx " + $los[0] + " -lsy " +  $los[1] + " -lsz " +  $los[2]);
  519.             if ($comp == "f")
  520.             {
  521.                 $ld=`optionVar -query ($ovar+"LocalDirection")`;
  522.                 float $offset = `optionVar -query ($ovar+"Offset")`;
  523.                 float $grav[3]=`optionVar -query ($ovar+"Gravity")`;
  524.                 float $magn[3]=`optionVar -query ($ovar+"Magnet")`;
  525.                 float $attr=`optionVar -query ($ovar+"Attr")`;
  526.                 float $weight=`optionVar -query ($ovar+"Weight")`;
  527.                 $cmd =($cmd 
  528.                     + " -ldx " + $ld[0]  + " -ldy " +  $ld[1]  + " -ldz " +  $ld[2]
  529.                     + " -off " +  $offset + " -w " + $weight  
  530.                     + " -gx " +  $grav[0] + " -gy " +  $grav[1] + " -gz " +  $grav[2]
  531.                     + " -att " + $attr
  532.                     + " -mx " +  $magn[0] + " -my " +  $magn[1] + " -mz " +  $magn[2]);
  533.             }
  534.             if ($comp == "e")
  535.             {
  536.                 int $localCenter = `optionVar -query ($ovar+"LocalCenter")` -1;
  537.                 $cmd=($cmd + " -lc " + $localCenter);
  538.             }
  539.         }
  540.         else if ($comp == "vtx")
  541.         {
  542.             $ld=`optionVar -query ($ovar+"LocalDirection")`;
  543.             $cmd =($cmd 
  544.                 + " -ldx " + $ld[0]  + " -ldy " +  $ld[1]  + " -ldz " +  $ld[2]);
  545.         }
  546.     }
  547.     else
  548.     {
  549.         float $pivot[2];
  550.         $pivot[0] = $centerX; $pivot[1] = $centerY;
  551.         $cmd=($cmd
  552.             + " -tu " + $translate[0] + " -tv " +  $translate[1]
  553.             + " -ra " +  $rotate[0]
  554.             + " -su " +  $scale[0]    + " -sv " + $scale[1]     
  555.             + " -pvu " +  $pivot[0]   + " -pvv " + $pivot[1]     
  556.             + " -ran " +  $crand );
  557.     }
  558.     
  559.     return $cmd;
  560. }
  561.  
  562. global proc string performPolyMove (string $comp, int $option)
  563. {    
  564.     string $cmd;
  565.     string $lbl;
  566.     string $sel[];
  567.     if ($comp == "") {
  568.         if (`selectType -q -pf`) $comp="f";
  569.         else if (`selectType -q -pv`) $comp="vtx";
  570.         else if (`selectType -q -pe`) $comp="e";
  571.         else if (`selectType -q -puv`) $comp="map";
  572.         else $comp="vtx";
  573.     }
  574.     if ($comp == "f") $lbl="polyMoveFacet";
  575.     else if ($comp == "e") $lbl="polyMoveEdge";
  576.     else if ($comp == "vtx") $lbl="polyMoveVertex";
  577.     else if ($comp == "map") $lbl="polyMoveUV";
  578.     else {
  579.         warning "polygon vertices, edges, faces or UVs must be selected to move them.";
  580.         return "";
  581.     }
  582.     
  583.     switch ($option) {
  584.     case 0:
  585.         $sel=`polyCheckSelection $lbl $comp`;
  586.         if (size($sel) != 0) {
  587.             float $pivot[3];
  588.             if( $comp != "map" )
  589.             {
  590.                 float $bbox[6] = `polyEvaluate -bc`;
  591.                 $pivot[0] = ($bbox[1] + $bbox[0]) / 2.0;
  592.                 $pivot[1] = ($bbox[3] + $bbox[2]) / 2.0;
  593.                 $pivot[2] = ($bbox[5] + $bbox[4]) / 2.0;
  594.             }
  595.             else
  596.             {
  597.                 float $bbox[4] = `polyEvaluate -bc2`;
  598.                 $pivot[0] = ($bbox[1] + $bbox[0]) / 2.0;
  599.                 $pivot[1] = ($bbox[3] + $bbox[2]) / 2.0;
  600.                 $pivot[2] = 0.0;
  601.             }
  602.             setOptionVars($comp, false);
  603.             int $index=0;
  604.             string $oldnodes[]=`ls -sl -dep`;
  605.             if (size($oldnodes) > 0)
  606.                 select -d $oldnodes;
  607.             while (size($sel) > $index) {
  608.                 string $cursel[];
  609.                 string $res[];
  610.                 $index=`polyNextSelectionBatch $sel $cursel $index`;
  611.                 string $cmd=`assembleCmd $comp $pivot[0] $pivot[1] $pivot[2]`;
  612.                 for ($i=0; $i<size($cursel); $i++)
  613.                     $cmd=($cmd + " " + $cursel[$i]);
  614.                 $res=`evalEcho $cmd`;
  615.  
  616.                 if (size($res) > 0) {
  617.                     select -add $res;
  618.                 }
  619.  
  620.             }
  621.             clear $sel;
  622.             // *** should perhaps remove the following line
  623.             // and restore the current ctx instead.
  624.             setToolTo ShowManips;    
  625.         }
  626.         break;
  627.     case 1: polyMoveOptions $comp; break;
  628.     default:
  629.         // useless, but we'd like a fix: setOptionVars($comp, false);
  630.         $cmd = "performPolyMove \"\" 0";
  631.     }
  632.     return $cmd;
  633. }
  634.